#ifndef MESSAGEPACKAGE_H
#define MESSAGEPACKAGE_H


#include <QJsonObject>
#include <QJsonDocument>
#include <QTcpSocket>
#include<QJsonArray>


// 消息类型新增：
// "file_upload" - 文件上传
// "file_list"   - 文件列表
// "file_download" - 文件下载
// "file_data"   - 文件数据


typedef struct
{
    int PackNum;
    int packTaken;
    char data[1024];
}ImagePackage;

class MessagePackage
{
public:
    MessagePackage();

    QJsonObject obj;

    QString type(); //消息操作类型
    void setType(QString type);

    //群组

    void setInviteUser(const QString &username);
    QString inviteUser();

    void setGroupId(const QString& id);
    QString groupId();

    void setGroupName(const QString& name);
    QString groupName();

    void setMemberList(const QStringList& members);
    QStringList memberList();

    QString userName();
    void setUserName(QString name);
    QString recvName();
    void setRecvName(QString name);

    QString getMessage();
    void setMessage(QString mess);

    QString userPswd();
    void setUserPswd(QString pswd);

    //视频 相关
    void setMulticastIp(const QString &ip) { obj.insert("multicast_ip", ip); }
    QString multicastIp() { return obj["multicast_ip"].toString(); }

    void setMulticastPort(int port) { obj.insert("multicast_port", port); }
    int multicastPort() { return obj["multicast_port"].toInt(); }

    void setMeetingId(const QString &id) { obj.insert("meeting_id", id); }
    QString meetingId() { return obj["meeting_id"].toString(); }

    bool result();
    void setResult(bool res);


    QByteArray getData();
    static void recvMessage(MessagePackage& pack,QTcpSocket* socket);
    static void sendMessage(MessagePackage& pack,QTcpSocket* socket);
private:



};

#endif // MESSAGEPACKAGE_H
